[ 添付ファイルを添付する ] [ 名前変更このページの名前を変更する ] [ 編集このページを編集する ]

[[トップ>FrontPage]] > [[MAP作成]] > [[トリガーエディタ]] > [[Jass Script]] > [[Jass Script/チュートリアル]] > function
[[トップ>FrontPage]] > [[MAP作成]] > [[トリガーエディタ]] > [[Jass Script]] > [[Jass講座]] > function

~
~

''function''とは関数を指す。Jass Scriptでは、戻り値を持つ関数も持たない関数もすべて''function''で定義される。

複数回行う処理をひとつの''function''にまとめておけば便利。普通、これをどんどん作っていく。

&color(red){''Jass NewGenの導入が前提''};です。導入せずとも利用できる内容も一部ありますが、あったほうが断然有利です。
----
#contents
----
*使い方 [#ud8c9920]
functionは、以下のように定義される。


     function HelloWorld takes nothing returns nothing
 
         call DisplayTextToPlayer(GetLocalPlayer(),0,0,"Hello, world!")
 
     endfunction


定義された関数は、以下のようにしていつでも呼び出すことができる。


     call HelloWorld()


*注意点 [#qfc49dd8]
カスタムスクリプトで作成されたJass Scriptは、最終的にひとつのテキストファイルにまとめられる。

このとき、テキストの''下部で定義したfunctionは、それより上部でcallすることができない''。


以下のスクリプトの場合、エラーが出る。


     function initGame takes nothing returns nothing
     
         call CantCallMe()
 
     endfunction

     function CantCallMe takes nothing returns nothing
         //この関数は initGame より下流に位置するので、
         //initGame内から call することはできない。
         //この例のように記載すると、MAP保存時にエラーが出て、保存できない。
     endfunction
     

ひとつのページ内であれば注意して防げる問題ではあるが、複数のページにわたって呼び出されることのある function を作成する場合は、MAP保存時にどのページが上にくるかによってエラーが出るかどうかが変わる。


複数のページで利用する関数を定義する場合は、[[library>Jass Script/モジュール、クラス#library]] を利用すると便利。
*引数 [#tf13559e]
takes 〜 returns の間に、&color(lightblue){''変数型''}; '変数名', &color(lightblue){''変数型''}; '変数名', .... の書式で記入する。


記入例:

     function HelloWorldtoPlayer takes player whichPlayer returns nothing
 
         call DisplayTextToPlayer(whichPlayer,0,0,"Hello, world!")
 
     endfunction

*戻り値 [#e2ef32a2]
returns 〜 に、変数型で記入。returnの位置で関数の処理は終了し、指定された形を返す。


例:

     function GetMessage takes nothing returns string
 
         return "Hello, world!"
          
     endfunction
 
     function HelloWorldtoPlayer takes player whichPlayer returns nothing
 
         call DisplayTextToPlayer(whichPlayer,0,0,GetMessage())
 
     endfunction